#ifndef DATASTRUCTURE_MATRIX_GRAPH_H
#define DATASTRUCTURE_MATRIX_GRAPH_H

#define MaxVertexNum 10
// 邻接矩阵

typedef struct {
    // 顶点编号
    int no;
    // 顶点其他信息
    char *info;
} VertexType;

typedef struct {
    // 邻接矩阵的边数组
    int edges[MaxVertexNum][MaxVertexNum];
    // 顶点数
    int nv;
    // 边数
    int ne;
    // 顶点存放信息
    VertexType data[MaxVertexNum];
} MGraph;

void testMGraph();

// 单源最短路径，Dijkstra 狄克斯特拉算法，适合稀疏图
void dijkstra(MGraph *g, int v);

// 多源最短路径，Floyd 弗洛伊德算法，适合稠密图
void floyd(MGraph *g);

// 让一棵小树长大，Prim 普里姆算法
void prim(MGraph *g, int v);

// 将森林合成树，kruskal 克鲁斯卡尔算法，适合稀疏图
void kruskal(MGraph *g);

#endif //DATASTRUCTURE_MATRIX_GRAPH_H
